package filesystem

import (
	"os"
	"path/filepath"
	"runtime"
)

var hasSymlinkPrivilege_ bool = false

func hasSymlinkPrivilege() bool {
	return hasSymlinkPrivilege_
}
func checkHasSymlinkPrivilege() bool {
	if runtime.GOOS != "windows" {
		return true // 非Windows系统默认有权限
	}

	// 尝试创建一个临时符号链接来检测权限
	tmpDir, err := os.MkdirTemp("", "symlinktest")
	if err != nil {
		return false
	}
	defer os.RemoveAll(tmpDir)

	target := filepath.Join(tmpDir, "target")
	link := filepath.Join(tmpDir, "link")

	// 创建目标文件
	if err := os.WriteFile(target, []byte("test"), 0644); err != nil {
		return false
	}

	// 尝试创建符号链接
	err = os.Symlink(target, link)
	return err == nil
}

func init() {
	hasSymlinkPrivilege_ = checkHasSymlinkPrivilege()
}
